//https://leetcode.cn/problems/find-the-longest-semi-repetitive-substring/description/
//找到最长的半子字符串
//给你一个下标从 0 开始的字符串 s ，这个字符串只包含 0 到 9 的数字字符。
//如果一个字符串 t 中至多有一对相邻字符是相等的，那么称这个字符串 t 是 半重复的 。例如，0010 、002020 、0123 、2002 和 54944 是半重复字符串，而 00101022 和 1101234883 不是。
//请你返回 s 中最长 半重复 子字符串的长度。
//一个 子字符串 是一个字符串中一段连续 非空 的字符。

int longestSemiRepetitiveSubstring(char * s){
    int len = strlen(s);
    int dp[len][len];
    int max_len = 0;
    memset(dp, 0, sizeof(dp));
    for(int i = 0; i < len; i++)
    {
        for(int j = i + 1; j < len; j++)
        {
            if(s[j - 1] == s[j])
            {
                dp[i][j] = dp[i][j - 1] + 1;
            }
            else
            {
                dp[i][j] = dp[i][j - 1];
            }

            if(dp[i][j] <= 1 && max_len < j - i)
            {
                max_len = j - i;
            }
        }
    }
    return max_len + 1;
}